四天掌握Scala(2) |
您所在的位置:网站首页 › take breaks用法 › 四天掌握Scala(2) |
四天掌握Scala(2)1.5 循环 在 Scala 中,可以使用 for 和 while,但一般推荐使用 for 表达式,因为 for 表达式语法更简洁。 1.5.1 for 表达式语法格式如下: for(i val nums = 1.to(10) nums: scala.collection.immutable.Range.Inclusive = Range 1 to 10 scala> for(i for(i for(i :paste // Entering paste mode (ctrl-D to finish) for(i breakable{ | for (i = 50) break() | else println(i) | } | } 1.6.2 实现 continue用法: continue 的实现与 break 类似,但有一点不同:实现 break 是用 breakable{} 将整个 for 表达式包起来,而实现 continue 是用 breakable{} 将 for 表达式的循环体包含起来就可以了。 示例: 打印 1-100 的数字,使用 for 表达式来遍历,如果数字能整除10,不打印。 // 导入scala.util.control包下的Break scala> import scala.util.control.Breaks._ import scala.util.control.Breaks._ scala> for(i def add(a:Int, b:Int) = a + b add: (a: Int, b: Int)Int scala> add(5,6) res4: Int = 111.7.2 返回值类型推断Scala 定义方法可以省略返回值,由 Scala 自动推断返回值类型。这样方法定义后更加简洁。定义递归方法,不能省略返回值类型。因为,递归调用是一层一层向内走,当前那一层无法推断返回类型,会导致一系列问题。 示例: 定义递归方法(求阶乘),比如求 10 的阶乘,10 * 9 * 8 * 7 * 6 * ... * 1 参考代码 Scala 中的方法参数,使用比较灵活。它支持以下几种类型的参数:默认参数、带名参数、变长参数。 1.8.1 默认参数在定义方法时可以给参数定义一个默认值。 示例: 定义一个计算两个值相加的方法,这两个值默认为 0。调用该方法,不传任何参数。参考代码 // x,y带有默认值为0 scala> def add(x:Int = 0, y:Int = 0) = x + y add: (x: Int, y: Int)Int scala> add() res5: Int = 01.8.2 带名参数在调用方法时,可以指定参数的名称来进行调用。 示例: 定义一个计算两个值相加的方法,这两个值默认为 0。调用该方法,只设置第一个参数的值。参考代码: scala> def add(x:Int = 0, y:Int = 0) = x + y add: (x: Int, y: Int)Int scala> add(1) res6: Int = 11.8.3 变长参数如果方法的参数是不固定的,可以定义一个方法的参数是变长参数。语法格式如下: def 方法名(参数名:参数类型*):返回值类型 = { 方法体 }在参数类型后面加一个 * 号,表示参数可以是0个或者多个。 示例: 定义一个计算若干个值相加的方法。调用方法,传入以下数据:1,2,3,4,5。参考代码: scala> def add(num:Int*) = num.sum add: (num: Int*)Int scala> add(1,2,3,4,5) res7: Int = 15其他:Scala 允许指定最后一个参数是可变长度的,或者唯一一个参数。变长参数,在函数体内本质上是一个 Array 实例,也就是除了例子里面的 sum 外,我们也可以用 for 循环迭代它,如: scala> def add(x:Int*): Int={ | var result=0 | for(i add(1,2,3) res8: Int = 6虽然它本质上是一个 Array,但是你不可以将 Array 对象传递给它,如果要传递需要传递如 array:_* 表明将每个元素传递给它,而不是整个数组对象。如: add(ar:_*) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |